package MyThread_demo;

/**
 * @author ChenYongHao
 * @date 2023/5/4 15:45
 * @desc
 * ThreadGroup是Java提供的一种对线程进行分组管理的手段，可以对所有线程以组为单位进行操作，如设置优先级、守护线程等。
 */
class MyRunnableA implements Runnable {
    @Override
    public void run() {
        for (int x = 0; x < 5; x++) {
            System.out.println(Thread.currentThread().getThreadGroup() + ":" + Thread.currentThread().getName() + ":" + x);
        }
    }
}

public class 线程组的创建 {
    public static void main(String[] args) {
        // ThreadGroup(String name)
        ThreadGroup tg = new ThreadGroup("线程组");
        // Thread(ThreadGroup group, Runnable target, String name)
        Thread t1 = new Thread(tg, new MyRunnableA(), "张三");
        Thread t2 = new Thread(tg, new MyRunnableA(), "李四");
        // 获取组名并在控制台输出
        System.out.println("t1的线程组名称：" + t1.getThreadGroup().getName());
        System.out.println("t2的线程组名称：" + t2.getThreadGroup().getName());
        // 表示该组线程是后台线程
        tg.setDaemon(true);
        // 表示该组线程的优先级5
        tg.setMaxPriority(5);
        // 启动线程组中的所有线程
        t1.start();
        t2.start();
        // 打印该组活跃线程的信息
        tg.list();
    }
}
